From: Daniel van Vugt Date: Wed, 19 Feb 2020 11:09:07 +0000 (+0800) Subject: js/ui: Use Clutter.OffscreenRedirect.ON_IDLE X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~772^2^2~72 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=c0c027c608d0aa1c547a2a82bd3ce6b84bb83b83;p=gnome-shell.git js/ui: Use Clutter.OffscreenRedirect.ON_IDLE To bypass offscreening in cases where continuous animation is happening. Offscreening is slower in such cases so this reduces the render time of animations within offscreenable actors. On an i7-7700 this reduces the render time of boxpointers for example by 25-30%. https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1025 --- diff --git a/js/ui/boxpointer.js b/js/ui/boxpointer.js index 03cb4a567..940f6aa16 100644 --- a/js/ui/boxpointer.js +++ b/js/ui/boxpointer.js @@ -33,7 +33,7 @@ var BoxPointer = GObject.registerClass({ _init(arrowSide, binProperties) { super._init(); - this.set_offscreen_redirect(Clutter.OffscreenRedirect.ALWAYS); + this.set_offscreen_redirect(Clutter.OffscreenRedirect.ON_IDLE); this._arrowSide = arrowSide; this._userArrowSide = arrowSide; diff --git a/js/ui/dash.js b/js/ui/dash.js index 6eb71e73b..928104637 100644 --- a/js/ui/dash.js +++ b/js/ui/dash.js @@ -353,7 +353,7 @@ var Dash = GObject.registerClass({ clip_to_allocation: true }); this._box._delegate = this; this._container.add_actor(this._box); - this._container.set_offscreen_redirect(Clutter.OffscreenRedirect.ALWAYS); + this._container.set_offscreen_redirect(Clutter.OffscreenRedirect.ON_IDLE); this._showAppsIcon = new ShowAppsIcon(); this._showAppsIcon.show(false); diff --git a/js/ui/overview.js b/js/ui/overview.js index 62a3c0917..45d12340b 100644 --- a/js/ui/overview.js +++ b/js/ui/overview.js @@ -108,7 +108,7 @@ class OverviewActor extends St.BoxLayout { track_hover: true, can_focus: true, }); - this._searchEntry.set_offscreen_redirect(Clutter.OffscreenRedirect.ALWAYS); + this._searchEntry.set_offscreen_redirect(Clutter.OffscreenRedirect.ON_IDLE); let searchEntryBin = new St.Bin({ child: this._searchEntry, x_align: Clutter.ActorAlign.CENTER, diff --git a/js/ui/panel.js b/js/ui/panel.js index eb3a19599..fd499f863 100644 --- a/js/ui/panel.js +++ b/js/ui/panel.js @@ -788,7 +788,7 @@ class Panel extends St.Widget { super._init({ name: 'panel', reactive: true }); - this.set_offscreen_redirect(Clutter.OffscreenRedirect.ALWAYS); + this.set_offscreen_redirect(Clutter.OffscreenRedirect.ON_IDLE); this._sessionStyle = null; diff --git a/js/ui/windowManager.js b/js/ui/windowManager.js index 075fbb15b..b1b080616 100644 --- a/js/ui/windowManager.js +++ b/js/ui/windowManager.js @@ -1256,7 +1256,7 @@ var WindowManager = class { // while actor updates are frozen. let actorContent = Shell.util_get_content_for_window_actor(actor, oldFrameRect); let actorClone = new St.Widget({ content: actorContent }); - actorClone.set_offscreen_redirect(Clutter.OffscreenRedirect.ALWAYS); + actorClone.set_offscreen_redirect(Clutter.OffscreenRedirect.ON_IDLE); actorClone.set_position(oldFrameRect.x, oldFrameRect.y); actorClone.set_size(oldFrameRect.width, oldFrameRect.height); Main.uiGroup.add_actor(actorClone);